package com.ruoyi.common.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringContextUtil implements ApplicationContextAware {

// Spring应用上下文环境

	private static ApplicationContext applicationContext;

	/** * 实现ApplicationContextAware接口的回调方法。设置上下文环境

	 *

	 * @param applicationContext

	 */

	public void setApplicationContext(ApplicationContext applicationContext) {

		SpringContextUtil.applicationContext = applicationContext;

	}

	/** *

	 @return ApplicationContext

	 */

	public static ApplicationContext getApplicationContext() {

		return applicationContext;

	}

	/** * 通过name获取对象

	 *  @param name

	 * @return Object

	 * @throws BeansException

	 */

	public static Object getBeanObj(String name) throws BeansException {

		return applicationContext.getBean(name);

	}

	/** * 通过class获取对象

	 *@param

	 * @return T

	 * @throws BeansException

	 */

	public  <T> T getBean(Class<T> clazz) throws BeansException {

		return applicationContext.getBean(clazz);

	}

}
